﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Configuration;
using System.Data;
using log4net;
using SW_SoftBully.Models.ModuloServicios.MantenimientoPreventivo;

namespace SW_SoftBully.Models.ModuloServicios
{
    public class MantenimientoPreventivoDAO
    {
        public string RegistrarMantenimientoPreventivo(MantenimientoPreventivoBean mantenimientoPreventivo)
        {
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["SoftBully"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

                //sqlCon.Open();
                //string query = "select e.id_Edificio from Edificio e where e.Nombre ='"+ mantenimientoPreventivo.NombreEdificio +"'";
                //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + query);
                //SqlCommand sqlCmd1 = new SqlCommand(query, sqlCon);
                //SqlDataReader dataReader1 = sqlCmd1.ExecuteReader();
                //int idEdif = new int();
                //while (dataReader1.Read())
                //{
                //    idEdif = Convert.ToInt16(dataReader1[0]);
                //}
                //dataReader1.Close();

                //query = "select m.id_mantenible from mantenible m where m.Nombre ='" + mantenimientoPreventivo.NombreMantenible + "'";
                //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + query);
                //SqlCommand sqlCmd2 = new SqlCommand(query, sqlCon);
                //SqlDataReader dataReader2 = sqlCmd2.ExecuteReader();
                //int idMant = new int();
                //while (dataReader2.Read())
                //{
                //    idMant = Convert.ToInt16(dataReader2[0]);
                //}
                //dataReader2.Close();
                //sqlCon.Close();

                sqlCon.Open();

                string commandString = "INSERT INTO mantenimiento_preventivo (Fecha, Descripcion, estado, monto, id_contrato_preventivo, id_mantenible, id_edificio) VALUES" +
                                                                            "(convert(datetime,'" + mantenimientoPreventivo.fecha + "',103), '" + mantenimientoPreventivo.descripcion + "', 1, " + mantenimientoPreventivo.costo + ", " + mantenimientoPreventivo.id_contrato_preventivo + "," + mantenimientoPreventivo.id_Mantenible + "," + mantenimientoPreventivo.id_Edificio + ")";

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();
                sqlCon.Close();
                mantenimientoPreventivo.conexion = "Bien";

            }

            catch(Exception e)
            {
                mantenimientoPreventivo.conexion = e.ToString();
            }
            return mantenimientoPreventivo.conexion;
        }


        public List<MantenimientoPreventivoBean> ListarMantenimientoPreventivo(MantenimientoPreventivoBean mantenimientoPreventivo)
        {
            try
            {
                List<MantenimientoPreventivoBean> listaMantenimientosPreventivos = new List<MantenimientoPreventivoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["SoftBully"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();


                string commandString = "select mp.id_mantenimiento_preventivo, m.id_mantenible, m.Nombre, mp.id_contrato_preventivo, p.id_proveedor, p.RazonSocial, mp.Fecha, mp.descripcion, mp.monto " +
                                       "from mantenimiento_preventivo mp, mantenible m, contrato_preventivo cp, proveedor p, contrato_x_mantenible cxm, edificio e " +
                                       "where p.RazonSocial like '" + mantenimientoPreventivo.NombreProveedor + "%' and mp.id_contrato_preventivo = cp.id_contrato_preventivo " +
                                       "and cp.id_proveedor = p.id_proveedor and cp.id_contrato_preventivo = cxm.id_contrato_preventivo " +
                                       "and m.id_mantenible = cxm.id_mantenible and mp.estado = 1 and mp.id_mantenible = m.id_mantenible and e.id_Edificio = mp.id_edificio and e.Nombre like '%" + mantenimientoPreventivo.NombreEdificio + "%'";

                //if ((mantenimientoPreventivo.FechaInicio + "").Length == 0 || (mantenimientoPreventivo.FechaFin + "").Length == 0)
                //    commandString = commandString + " or fecha between convert(datetime,'" + mantenimientoPreventivo.FechaInicio + "',103)"
                //                                   + " and convert(datetime,'" + mantenimientoPreventivo.FechaFin + "',103)";
                //else commandString = commandString + " and fecha between convert(datetime,'" + mantenimientoPreventivo.FechaInicio + "',103)"
                //                                   + " and convert(datetime,'" + mantenimientoPreventivo.FechaFin + "',103)";

                if (mantenimientoPreventivo.id_Mantenible > 0) {
                    commandString += "and  m.id_mantenible = " + mantenimientoPreventivo.id_Mantenible;
                }

                if (!string.IsNullOrEmpty(mantenimientoPreventivo.FechaInicio)) {
                    commandString += " AND fecha BETWEEN convert(datetime,'" + mantenimientoPreventivo.FechaInicio + "',103)"
                                   + " AND convert(datetime,'" + mantenimientoPreventivo.FechaFin + "',103)";
                }

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    MantenimientoPreventivoBean mantenimientoPreventivoB = new MantenimientoPreventivoBean();
                    mantenimientoPreventivoB.id_mantenimiento_preventivo = (int)dataReader[0];
                    mantenimientoPreventivoB.id_Mantenible = (int)dataReader[1];
                    mantenimientoPreventivoB.NombreMantenible = (string)dataReader[2];
                    mantenimientoPreventivoB.id_contrato_preventivo = (int)dataReader[3];
                    mantenimientoPreventivoB.id_proveedor = (int)dataReader[4];
                    mantenimientoPreventivoB.NombreProveedor = (string)dataReader[5];
                    mantenimientoPreventivoB.fecha = ((DateTime)dataReader[6]).ToString("dd/MM/yyyy");
                    mantenimientoPreventivoB.descripcion = (string)dataReader[7];
                    mantenimientoPreventivoB.costo = Convert.ToDouble(dataReader[8]);

                    listaMantenimientosPreventivos.Add(mantenimientoPreventivoB);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaMantenimientosPreventivos;
            }
            catch (Exception e)
            {
                mantenimientoPreventivo.conexion = e.ToString();
                return null;
            }
        }

        public string modificarMantenimiento(MantenimientoPreventivoBean mantenimientoPreventivo)
        {
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["SoftBully"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "update mantenimiento_preventivo set " +
                                       "Fecha = convert(datetime, '" + mantenimientoPreventivo.fecha + "',103) , " +
                                       "Descripcion = '" + mantenimientoPreventivo.descripcion + "', " +
                                       "monto = " + Convert.ToDouble(mantenimientoPreventivo.costo) + " " +
                                       "where id_mantenimiento_preventivo = " + mantenimientoPreventivo.id_mantenimiento_preventivo;

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                sqlCmd.ExecuteNonQuery();

                sqlCon.Close();

                mantenimientoPreventivo.conexion = "Bien";

            }
            catch (Exception e)
            {
                String men = e.ToString();
                mantenimientoPreventivo.conexion = men;
            }
            return mantenimientoPreventivo.conexion;
        }


        public string eliminarMantenimientoPreventivo(MantenimientoPreventivoBean mantenimiento)
        {
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["SoftBully"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "UPDATE mantenimiento_preventivo SET estado = 0 WHERE id_mantenimiento_preventivo = " + mantenimiento.id_mantenimiento_preventivo;

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();

                sqlCon.Close();

                mantenimiento.conexion = "Bien";
            }
            catch (Exception e)
            {
                String men = e.ToString();
                mantenimiento.conexion = men;
            }
            return mantenimiento.conexion;
        }
    }
}